%%%-------------------------------------------------------------------
%%% @author mirahs(2892727493@qq.com)
%%% @doc
%%%     网络通讯
%%% @end
%%%-------------------------------------------------------------------

%% 游戏客户端
-define(NET_CLIENT_GAME,            <<"game-------------------">>).
%% web
-define(NET_CLIENT_WEB,             <<"web--------------------">>).
%% 测试器
-define(NET_CLIENT_TESTER,          <<"tester-----------------">>).

-define(NET_TCP_OPTIONS, [
    binary
    ,{packet, 0}
    ,{active, false}
    ,{reuseaddr, true}
    ,{nodelay, false}
    ,{delay_send, true}
    ,{exit_on_close, false}
    ,{send_timeout, 10000}
    ,{send_timeout_close, false}
]).

-record(net_conn, {
    is_cowboy               % 是否 cowboy
    ,module                 % 协议处理器

    ,type                   % 连接器类型
    ,socket
    ,ip :: bitstring()
    ,port :: integer()

    ,read_head = false      % 标识正在读取数据包头
    ,read_cont = false      % 标识正在读取数据内容
    ,head_bin               % 包头数据
    ,bins = []              % 所有数据(websocket)

    ,account = <<>>         % 账号
    ,object                 % 控制器
    ,object_pid             % 控制器 pid
    ,object_id              % 控制器 id

    ,recv_count = 0         % 已接收的消息数量
    ,send_count = 0         % 已发送的消息数量
    ,error_send = 0         % 发送错误次数
    ,bad_req_count = 0      % 记录客户端发送的错误数据包个数

    ,hb_last = 0            % 最后一次心跳时间
    ,hb_count = 0           % 心跳包计数
    ,hb_start = 0           % 心跳包开始时间
    ,hb_err = 0             % 心跳包错误次数
}).
